[ACM]AWSの無料SSL証明書サービスCertificate Manager について調べてみた
はじめに
AWSチームのすずきです。
無料で使えるSSL証明書発行サービスとしてリリースされたAWSのACM、 テスト環境での動作や、公式ページのドキュメント、FAQなどの確認を通じて確認できた仕様などについて、 紹介させて頂きます。
ACMで出来ること
SSL証明書の発行
- 証明書の仕様
- 鍵の暗号化方式はRSA、鍵長2048ビット、SHA-256
- 証明書の認証局(CA)はAmazonになります
- ルート証明はStarfield Services(Go Daddy系列、業界シェア上位)です。
- 料金
- 証明書の発行費用は無料です。
- 証明書を利用するELB、CloudFrontの実費のみで利用です。
- 対応環境
- 99%のOS、ブラウザに対応するとされています。
- Windows XP SP3、Java 6 以降の対応
- OSベンダのサポート対象となる現行OS、ブラウザ環境であればまず問題なく利用出来る事が期待できます。
- 99%のOS、ブラウザに対応するとされています。
- マルチドメイン、ワイルドカード証明書も作成可能です。
-
Firefox 証明書ビューア表示内容
鍵の保管
- 証明書の秘密鍵はAWS上に安全な状態で保管されます
- 秘密鍵の漏洩に伴うリスク、極めて低いと考えられます。
証明書の更新
- ACMで発行される証明書の有効期限は13ヶ月、失効60日前に自動更新されます。
- 証明書の更新時、鍵情報ペアはACMにより新たに用意され、証明書を利用中のELB、CloudFront側の設定変更も不要です。
独自ドメインのHTTPS対応
- CloudFront
- 全てのリージョンで、SNI(Server Name Indication) SSLが利用可能です。
- AWS Certificate Manager 無料のサーバ証明書でCloudFrontをHTTPS化してみた
- ELB
- 2016年1月現在、バージニア(us-east-1)リージョンで利用が可能です。
- 2016年4月17日、東京リージョン(ap-northeast-1)でも利用可能になりました。
- 東京でも無料でSSL証明が使用可能になりました
ACMで出来ない事
- 秘密鍵の入手
- AWS上に保管された秘密鍵、利用者は取り出す事はできません。
- EC2インスタンスへの組み込みが必要となる利用はできません
- Apache(mod_ssl)
- メールの暗号化(S/MIME)
- HTTPS通信の復号機能を備えたFW製品など。
- 実在認証(EV)、組織認証(OV)証明書の発行
- ACMではドメイン認証(DV)のみが提供されます。
- 実在証明(EV証明書ではアドレスバーの緑表示)はできません。
- EV証明書採用ページ例(スルガ銀行)
- 証明書のカスタマイズ
- 鍵長、暗号化方式の変更は出来ません。
- 古いフィーチャーフォンなど、脆弱性が報告されている暗号化方式用の証明書は用意できません。
- サブジェクト情報のカスタマイズにも対応しません。
- 鍵長、暗号化方式の変更は出来ません。
- メール以外でのドメイン認証
- ACMのドメイン認証は、ドメイン管理者宛のメール認証に限定されます。
- 指定されたCNAMEレコードをDNSレコードに反映する方式など、一部の認証局で提供されるメール以外の認証方式は利用できません。
- メール環境が存在しない場合、SESのメール受信機能の利用を検討ください。参考:SSL証明書発行時のドメイン認証メールをSESで受け取ってみた
- ACMのドメイン認証は、ドメイン管理者宛のメール認証に限定されます。
- サイトシールの利用
- 一部の証明局で提供される発行した証明書の有効性を示すリンクや、バナーなどはACMでは提供されません。
- シマンテック社例
まとめ
セキュアなインターネット通信を実現する為に必要となるSSL環境、 適切に構築、維持するには、鍵の管理や、暗号化方式などをはじめとして多くの留意点が存在し、 IPAで纏められたガイドラインも全93ページ、読み応えのある資料が公開されています。
第三者機関による存在確認が求められる場合や、独自のアプリケーション、ミドルウェアが SSL証明書を必要とするなどの例外は存在すると予想されますが、 ACMのリリースにより、充分な強度を備えた暗号化通信を簡単に導入、運用出来るようになりました。
ACM、ELBで利用出来るのはバージニアに限られますが、各国リージョンへの展開も準備中との事。 東京リージョンへの展開や、API Gatewayへの対応などにも期待です。
参考資料
opensslで見た証明書
- opensslコマンドを利用して、証明書情報を確認した結果です。
- 対象ELB、ACMで作成した証明書、デフォルトのセキュリティポリシー設定で利用しています。
$ openssl s_client -connect (ELBのFQDN):443 -showcerts < /dev/null CONNECTED(00000003) depth=4 C = US, O = "Starfield Technologies, Inc.", OU = Starfield Class 2 Certification Authority verify return:1 depth=3 C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2 verify return:1 depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon verify return:1 depth=0 CN = *.(略) verify return:1 --- Certificate chain 0 s:/CN=*.(略) i:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon -----BEGIN CERTIFICATE----- (略) -----END CERTIFICATE----- 1 s:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon i:/C=US/O=Amazon/CN=Amazon Root CA 1 -----BEGIN CERTIFICATE----- (略) -----END CERTIFICATE----- 2 s:/C=US/O=Amazon/CN=Amazon Root CA 1 i:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2 -----BEGIN CERTIFICATE----- (略) -----END CERTIFICATE----- 3 s:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2 i:/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority -----BEGIN CERTIFICATE----- (略) -----END CERTIFICATE----- --- Server certificate subject=/CN=*.(略) issuer=/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon --- No client certificate CA names sent Server Temp Key: ECDH, prime256v1, 256 bits --- SSL handshake has read 5185 bytes and written 375 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES128-GCM-SHA256 Session-ID: 2790914FDEBBB83DDCB704A6CD48FF58E1971CEAEE181D29C2676895BA25D703 Session-ID-ctx: Master-Key: 1A9A44B27B2DE8A9491D9EF8FDAB190107F81B240DE5CCC22DC1B3A165DF7292E5D16C423BDD55E33820F0EAB2FCDD1A Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: (略) Start Time: 1453571518 Timeout : 300 (sec) Verify return code: 0 (ok) ---